package com.zhongge.service.impl;

import com.zhongge.model.dao.UserDao;
import com.zhongge.model.dao.impl.UserDaoImpl;
import com.zhongge.model.entity.User;
import com.zhongge.service.UserService;
import com.zhongge.util.MD5Util;

/**
 * @ClassName UserServiceImpl
 * @Description TODO 用户服务层实现类
 * @Author zhongge
 * @Version 1.0
 */
public class UserServiceImpl implements UserService {
    UserDao userDao = new UserDaoImpl();
    @Override
    public boolean register(User user) {
        //注册的时候==》如果用户存在，那么就不需要注册
        User existUser = userDao.findByUsername(user.getUsername());
        if (existUser != null) {
            return false;//如果用户存在就注册失败，那么后续的逻辑你需要的是==》去登录而不是注册
        }
        //如果用户不存在，那么就需要注册

        //如何注册：
        // 密码加密处理（AI辅助处理就好了）
        user.setPassword(MD5Util.encode(user.getPassword()));
        //1.首先处理的是头像问题(AI辅助处理)
        // 设置默认头像
        if (user.getAvatar() == null || user.getAvatar().isEmpty()) {
            user.setAvatar("/static/images/default-avatar.png");
        }
        //2.最后将数据存于数据库中即可
        int row = userDao.insert(user);
        return row > 0;
    }

    @Override
    public User login(String username, String password) {
        //登录的话就是需要在数据库中检索用户名和密码即可
        //首先根据用户名找到用户
        // 根据用户名查询用户
        User user = userDao.findByUsername(username);
        if (user == null) {
            return null; // 用户不存在
        }

        // 验证密码（加密后比对）
        if (MD5Util.encode(password).equals(user.getPassword())) {
            return user; // 密码正确
        }

        return null; // 密码错误
    }

    @Override
    public User getUserById(Integer id) {
        //这个直接调用UserDao 中查询即可，我们只需要进行==》相关的逻辑处理判断
        return userDao.findById(id);
    }

    @Override
    public boolean updateUser(User user) {
        // 获取数据库中原有用户信息
        //如果数据库不存在，那么就直接不用修改了
        User existingUser = userDao.findById(user.getId());
        if (existingUser == null) {
            return false;
        }

        // 不更新密码（密码更新单独处理）
        user.setPassword(existingUser.getPassword());

        int rows = userDao.update(user);
        return rows > 0;
    }
}
